#include <iostream>
#include <string>
#include <vector>

using namespace std;
// 如何转换为01背包问题，装满容量为x背包，有几种方法。
int test(vector<int>& nums, int S) {
  int sum = 0;
  for (int i = 0; i < nums.size(); i++) sum += nums[i];
  if (abs(S) > sum) return 0;        // 此时没有方案
  if ((S + sum) % 2 == 1) return 0;  // 此时没有方案
  int bagSize = (S + sum) / 2;
  vector<int> dp(bagSize + 1, 0);
  dp[0] = 1;
  for (int i = 0; i < nums.size(); i++) {
    for (int j = bagSize; j >= nums[i]; j--) {
      dp[j] += dp[j - nums[i]];
    }
  }
  return dp[bagSize];
}
int main() {
  vector<int> nums{1, 1, 1, 1, 1};
  int target = 3;
  cout << test(nums, target) << endl;
  return 0;
}